package com.edu.exam.enums.quality.monitoring;

/**
 * 巡考记录状态枚举
 * 
 * 从PatrolRecord.RecordStatus迁移而来
 * 定义了巡考记录的各种状态
 *
 * @author System
 * @version 1.0.0
 */
public enum PatrolRecordStatus {
    
    /**
     * 草稿状态
     */
    DRAFT("草稿"),
    
    /**
     * 已提交状态
     */
    SUBMITTED("已提交"),
    
    /**
     * 审核中状态
     */
    UNDER_REVIEW("审核中"),
    
    /**
     * 已审核状态
     */
    APPROVED("已审核"),
    
    /**
     * 已拒绝状态
     */
    REJECTED("已拒绝"),
    
    /**
     * 需要修改状态
     */
    NEEDS_REVISION("需要修改");

    private final String description;

    PatrolRecordStatus(String description) {
        this.description = description;
    }

    /**
     * 获取状态描述
     * 
     * @return 状态描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 判断是否为初始状态
     * 
     * @return 如果是初始状态返回true，否则返回false
     */
    public boolean isInitialStatus() {
        return this == DRAFT;
    }

    /**
     * 判断是否为已提交状态
     * 
     * @return 如果是已提交状态返回true，否则返回false
     */
    public boolean isSubmittedStatus() {
        return this == SUBMITTED;
    }

    /**
     * 判断是否为审核相关状态
     * 
     * @return 如果是审核相关状态返回true，否则返回false
     */
    public boolean isReviewRelatedStatus() {
        return this == UNDER_REVIEW || this == APPROVED || this == REJECTED || this == NEEDS_REVISION;
    }

    /**
     * 判断是否为终态状态
     * 
     * @return 如果是终态状态返回true，否则返回false
     */
    public boolean isTerminalStatus() {
        return this == APPROVED || this == REJECTED;
    }

    /**
     * 判断是否为需要修改状态
     * 
     * @return 如果是需要修改状态返回true，否则返回false
     */
    public boolean needsRevision() {
        return this == NEEDS_REVISION;
    }

    /**
     * 判断是否可以进行下一步操作
     * 
     * @return 如果可以进行下一步操作返回true，否则返回false
     */
    public boolean canProceedToNextStep() {
        return this == SUBMITTED || this == NEEDS_REVISION;
    }
}